<%@page import="board.BoardMyba"%>
<%@page import="board.Board"%>
<%@page import="java.net.URLEncoder"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.File"%>
<%@page import="databank.DataBank"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>게시판(파일 다운로드)</title>
</head>
<body>
<jsp:useBean id="boardVo" class="board.BoardVo"/>
<jsp:setProperty property="*" name="boardVo"/>
<%
BoardMyba mybatis = new BoardMyba();
String savePath = mybatis.getUploadPath();
ServletContext context = this.getServletContext();
String sFilePath = savePath + "/" + boardVo.getFilename();

// 파일을 읽기위한 버퍼정의
byte[] b = new byte[4096]; // 4kbyte단위
File file = new File(sFilePath);
FileInputStream in = new FileInputStream(sFilePath);

//클라이언트의 요청에 따른 응답정보 셋팅
String mineType = getServletContext().getMimeType(sFilePath);
if(mineType == null) mineType = "application/octect-stream";
response.setContentType(mineType);

//한글 파일명 처리
String encoding="";

if((request.getHeader("User-Agent").indexOf("Firefox")) > -1){
		String temp = boardVo.getFilename().replaceAll(" ","");
		encoding=new String (temp.getBytes("utf-8"), "8859_1");
		
	}else{
		encoding =URLEncoder.encode(boardVo.getFilename(), "utf-8");
		encoding = encoding.replace("+","%20");
}

// 다운로드 다이얼로그창 표시
response.setHeader("Content-Disposition", "attachment;filename="+encoding); // 헤드정보,첨부파일

// getOutputStream() 오류방지(더블클릭시도 예방)
out.clear();
out = pageContext.pushBody();

// 지정된 경로에 파일 저장
ServletOutputStream sos = response.getOutputStream();
int read = 0;
while( (read = in.read(b, 0, b.length)) != -1 ){   // -1이라는말은 모두 읽었다는 소리 in.read(b,0,b.length) 가 메인 4kbyte씩 읽어서 저장
// read의 의미는 읽은 바이트의 크기	
	sos.write(b, 0, read);
}

sos.flush();
sos.close();
in.close();
%>

</body>
</html>